package com.yuandian.api.business_monitor.vo;


import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.Date;


/**
 * @Description
 * 业务步骤表数据结构
 *
 * @author MiSiJie
 *
 * @date
 *
 * @version V1.0.0
 */
@Getter
@Setter
@ToString
public class BusinessStep implements java.io.Serializable, Cloneable {

	private static final long serialVersionUID = 1L;

	/**
	 * ID(主键)
	 */
	private String  id;

	/**
	 * 范围ID?
	 */
	private Long rangeId= 0L;

	/**
	 * 会话是否完成(0:完整1:无响应2:请求不完整3:响应不完整)
	 */
	private Integer isCompletion;

	/**
	 * 端到端关联标记
	 */
	private String  relvanceFlag;

	/**
	 * 业务资源编码
	 */
	private String  resourceCode;

	/**
	 * 步骤1表的数据ID
	 */
	private String 	businessStepId;

	/**
	 * 业务详单ID
	 */
	private String 	businessDetailId;

	/**
	 * 用户SESSION
	 */
	private String 	sessionId;

	/**
	 * 用户唯一标识
	 */
	private String  userIdentify;

	/**
	 * 业务系统ID
	 */
	private Integer systemId;

	/**
	 * 业务系统名称
	 */
	private String 	systemName;

	/**
	 * 网段ID
	 */
	private Integer segmentId;

	/**
	 * 网段名称
	 */
	private String 	segmentName;

	/**
	 * 业务编码
	 */
	private String  businessCode;

	/**
	 * 业务名称
	 */
	private String 	businessName;

	/**
	 * 业务步骤编码
	 */
	private String 	stepCode;

	/**
	 * 业务步骤名称
	 */
	private String 	stepName;

	/**
	 * 步骤类型
	 */
	private String stepType;

	/**
	 * 业务访问URL
	 */
	private String 	requestUrl;

	/**
	 * 业务原始访问URL
	 */
	private String 	orlUrl;

	/**
	 * 加载项关联URL
	 */
	private String 	referer;

	/**
	 * 操作系统
	 */
	private String 	operatingSystem;

	/**
	 * 浏览器
	 */
	private String 	browser;

	/**
	 * 区域编码
	 */
	private String 	regionalCode;

	/**
	 * 业务处理状态,操作成功标识
	 */
	private Integer dealState;

	/**
	 * 告警数量
	 */
	private Integer alarmCount;

	/**
	 * 统计指定告警类型的告警总数
	 */
	private Integer customizedAlarmCount = 0;

	/**
	 * 统计业务是否由于指定类型告警而产生的告警访问量(ES详单表字段customizedAlarmCount > 0 时，该字段 = 1)
	 */
	private Integer customizedAlarmVisitCount = 0;


	/**
	 * 系统返回码
	 */
	private Integer serverResCode;

	/**
	 * 开始时间（Date:YYYY-MM-DD HH:MM:SS）
	 */
	private Date 	startTime;

	/**
	 * 开始时间（Long:微妙）
	 */
	private Long 	startTimeUsec;

	/**
	 * 结束时间（Date:YYYY-MM-DD HH:MM:SS）
	 */
	private Date	endTime;

	/**
	 * 结束时间（Long:微妙）
	 */
	private Long 	endTimeUsec;

	/**
	 * 处理时长
	 */
	private Long 	dealTime;

	/**
	 * 加载结束时间（Date:YYYY-MM-DD HH:MM:SS）
	 */
	private Date	endLoadTime;

	/**
	 * 加载结束时间（Long:微妙）
	 */
	private Long 	endLoadTimeUsec;

	/**
	 * 加载时长
	 */
	private Long 	loadTime;

	/**
	 * 客户端空闲时间（详单组合后计算出与上一个步骤的客户操作间隔时间）
	 */
	private Long 	clientFreeTime;

	/**
	 * 客户端传输时长
	 */
	private Long    clientTranslateTime;

	/**
	 * 服务器响应开始时间（LDate:YYYY-MM-DD HH:MM:SS）
	 */
	private Date    serverResponseStartTime;

	/**
	 * 服务器响应开始时间（Long:微妙）
	 */
	private Long 	serverResponseStartTimeUsec;

	/**
	 * 服务器响应结束时间（Date:YYYY-MM-DD HH:MM:SS）
	 */
	private Date    serverResponseEndTime;

	/**
	 * 服务器响应结束时间（Long:微妙）
	 */
	private Long 	serverResponseEndTimeUsec;

	/**
	 * 服务器响应时间
	 */
	private Long 	serverResponseTime;

	/**
	 * 服务器传输时长
	 */
	private Long 	serverTranslateTime;

	/**
	 * 客户端请求IP
	 */
	private String 	requestIp;

	/**
	 * 客户端请求IP长整形格式
	 */
	private String	requestIpLong;

	/**
	 * 客户端请求端口
	 */
	private Integer requestPort;

	/**
	 * 服务器响应IP
	 */
	private String 	responseIp;

	/**
	 * 服务器响应端口
	 */
	private Integer responsePort;

	/**
	 * 专属指标名称
	 */
	private String  exclusiveIndicator;

	/**
	 * 专属指标值
	 */
	private String  exclusiveValue;

	/**
	 * 探针IP
	 */
	private String 	probeIp;

	/**
	 * 探针数据过来的时间
	 */
	private Date	probeTime;

	/**
	 * 创建时间
	 */
	private Date 	createTime;

	/**
	 * 结束时间
	 */
	private String endTimeMinute;

	/**
	 * 业务系统ID集
	 */
	private String systemIds;

	/**
	 * 区域名称
	 */
	private String  regionName;

    private Integer seq;

    private String requestMac;

    private String responseMac;

	/**
	 * 步骤1表的数据ID,整型17位前端接收有问题
	 */
	private String businessStepIdStr;
	private String regionFlag;
	private Integer isRegion;
	private String customCode;

	/**
	 * 是否被告警
	 */
	private Integer isAlarm;

	/**
	 * 最大id
	 */
	private String maxDataId;

	private Integer categoryType;

	private Integer isQueryId;

	/**
	 * 提示语
	 */
	private String resultExplain;

	/**
	 * 自定义返回码
	 */
	private String customResCode;

	/**
	 * step2表索引时间
	 */
	private Long indexTime;

	/**
	 * 告警类型ID, 用 | 号分隔
	 */
	private String alarmTypeIds;

	private String endTimeDay;

	/**
	 * 处理时长告警(取自 serverResponseEndTime 计算结果)
	 */
	private Integer isDealTimeAlarm;

	/**
	 * 营业厅编码
	 */
	private String businessHall;

	/**
	 * 营业员编码
	 */
	private String operatorId;

	/**
	 * 数据分片
	 */
	private int businessShard;

	//url接口路径 - 广东财厅需求
	private String urlApi;
	//菜单ID - 广东财厅需求
	private String menuId;
	//页签ID - 广东财厅需求
	private String pageLabelId;
	//查询条数 - 广东财厅需求
	private String pageSize;
	//按钮ID - 广东财厅需求
	private String buttonId;
    //按钮size
    private String buttonSize;
    // 请求大小
    public long requestBytes;

    // 响应大小
    public long responseBytes;

	//跳转次数
	private int jumpPage;

	//打开次数
	private int openPage;

	public Object clone() throws CloneNotSupportedException {
		return super.clone();
	}

}
